/* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */

/** 字符串为数组 转换失败返回空数组 */
export function str2Array<T extends unknown = unknown>(url: T[] | string): T[] {
  if (Array.isArray(url)) {
    return url;
  } else {
    try {
      const list = JSON.parse(url);
      return Array.isArray(list) ? list : [];
    } catch (e) {
      return [];
    }
  }
}

/**
 * 数组对象去重 (根据某个字段去重)
 * @param arr - 需要去重的数组
 * @param key - 需要根据那个字段去重
 */
export function filterRepeat<T extends Record<string, unknown>, K extends keyof T>(arr: T[], key: K): T[] {
  const res = new Map<unknown, 1>();
  return arr.filter((item) => !res.has(item[key]) && res.set(item[key], 1));
}
